大家好,今天小编关注到一个比较有意思的话题,就是关于c语言的位的问题,于是小编就整理了2个相关介绍c语言的位的解答,让我们一起看看吧。

  1. c语言中位与是什么意思?
  2. c语言128位是什么?

c语言中位与是什么意思?

是将二进制数按照位的对应相与,得到一个新的二进制数。1与0为0;1与1为1;0与0为0。分析如下:就是二进制的每一位相与。1、按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

c语言的位-C语言的位运算符
(图片来源网络,侵删)

按位与运算通常用来对某些位清0或保留某些位。

例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为11111111)。

c语言的位-C语言的位运算符
(图片来源网络,侵删)

回答如下:在C语言中,位与(&)是一种按位运算符,用于对两个操作数的每个对应位执行逻辑与操作。它对操作数的每个位进行比较,如果两个位都为1,则结果为1,否则结果为0。位与操作通常用于对二进制数据进行位操作。

示例:

c语言的位-C语言的位运算符
(图片来源网络,侵删)

***设有两个二进制数:1010和1100

进行位与运算:1010 & 1100

对应位的比较结果为:1 & 1,0 & 1,1 & 0,0 & 0

得到的结果为:1000(8进制表示为10)

因此,位与操作可以用于掩码操作、清零位、提取位等操作。

c语言128位是什么?

编译器的gcc是不支持__int128这种数据类型的,比如在codeblocks 16.01/Dev C++是无法编译的,但是提交到大部分OJ上是可以编译且能用的。C/C++标准。IO是不认识__int128这种数据类型的,因此要自己实现IO,其他的运算,与int没有什么不同。

但是官方上写了GCC提供了两种128位整数类型,分别是__int128_t和__uint128_t,分别用于声明有符号整数变量和无符号整数变量。

由于这种大整数无法使用函数printf()输出其值,所以自己做了一个整数转字符串函数write(),用于实现128位整数的输出。

亲测oj和洛谷可以AC

加法模板如下

#include <bits/stdc++.h>

using namespace std;

inline __int128 read()

{

__int128 x=0,f=1;

char ch=getchar();

while(ch<'0'||ch>'9')

{

if(ch=='-')

f=-1;

ch=getchar();

}

while(ch>='0'&&ch<='9')

{

x=x*10+ch-'0';

ch=getchar();

}

return x*f;

}

inline void write(__int128 x)

{

if(x<0)

{

putchar('-');

x=-x;

}

if(x>9)

write(x/10);

putchar(x%10+'0');

}

int main()

{

__int128 a = read();

__int128 b = read();

write(a + b);

return 0;

}

到此,以上就是小编对于c语言的位的问题就介绍到这了,希望介绍关于c语言的位的2点解答对大家有用。