是否可以int使用某些按位运算符从表示为(格式YYYYMMDD,例如20110401)的日期中提取月份?
如果是这样,怎么办呢?
编辑:我目前正在使用20110401%10000/100.我认为按位可能会更快.DateTime.Parse等对我想做的事情来说太慢了.
我觉得我遗漏了一些关于数字系统的基本知识,但我真的很困惑我正在尝试使用按位运算符的下面一段代码:
x=56;
printf("\nHere :\n%x %x\n",x,077);
x=x& ~077;
printf("%x\n",x);
Run Code Online (Sandbox Code Playgroud)
它将077视为八进制(hex 3f).如果我只放77,则将其视为十进制(十六进制4d).如果放177,则将其视为十进制(十六进制b1).我指的是Richie和Kernighan的C编程书.
请帮忙.
我在c中创建了一个简单的程序:
int y=33, x=45;
y = y && x;
printf("%d\n",y);
y = y & x;
printf("%d\n",y);
Run Code Online (Sandbox Code Playgroud)
输出为1和1.但如果我使用计算器,则表明x和y为33.为什么它变为1?
这是描述:
为了阻止疯狂编码器邪恶天才,你需要破译他发送给他的爪牙的加密信息。该消息包含几个数字,当输入超级计算机时,将向天空发射一枚导弹,遮挡阳光,让地球上的所有人都脾气暴躁和悲伤。
您发现某些数字的二进制表示形式中有一个经过修改的单个数字。更具体地说,在给定的数字 n 中,从右边算起的第 k 位最初被设置为 0,但其当前值可能不同。现在您需要编写一个函数,将 n 的第 k 位更改回 0。
例子
对于 n = 37 且 k = 3,输出应为killKthBit(n, k) = 33。
3710 = 1001012 → 1000012 = 3310。
对于 n = 37 且 k = 4,输出应为
杀死KthBit(n,k)= 37。
第 4 位已经是 0(看起来 Mad Coder 忘记加密这个数字了),所以答案仍然是 37。”
这是我找到的解决方案,但我无法理解它:
int killKthBit(int n, int k)
{
return n & ~(1 << (k - 1)) ;
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释该解决方案的作用及其语法吗?
我正在查看示例代码并发现此操作:
displayMap[x + (y/8)*LCD_WIDTH]|= 1 (shift by) shift;
Run Code Online (Sandbox Code Playgroud)
在哪里
byte shift = y % 8;
Run Code Online (Sandbox Code Playgroud)
我理解|操作数,=但是它们两个一起做什么。
汇编语言中“and”指令的作用是什么?有人告诉我,它会检查操作数的位顺序,并将 1 设置为 true,将其他设置为 false,但我不知道它实际上做了什么,也不知道它对代码有什么影响。
我问这个问题是因为我在Stack Overflow中找到了一个不使用减号(' - ')运算符来查找差异的示例.
答案是由差异= a + ~b +1给出的;
为何+1?
public class ByteToIntTest {
public static void main(String[] args) {
byte b = -1;
int i = b;
System.out.println("i=b: "+i);
i = b & 0xff;
System.out.println("i=b&0xff: "+i);
i = b | 0x00;
System.out.println("i=b|0x00: "+i);
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
i=b: -1
i=b&0xff: 255
i=b|0x00: -1
Run Code Online (Sandbox Code Playgroud)
为什么不i=b&0xff和i=b|0x00得到同样的结果?
我正在阅读运算符章节中的Golang教程书,上面写着5 &^ 11 = 4,但是这个运算符似乎并不常见,所以我无法立即理解,
我尝试通过列出三个数字的二进制形式来猜测其逻辑:
5 = 0101
&^) 11= 1011
-------------
4 = 0100
Run Code Online (Sandbox Code Playgroud)
但是我还是不明白,有人可以解释它是如何&^工作的吗?谢谢。
为什么^不在Python中进行平方?我知道取幂是**相反的,但究竟是什么^以及为什么不使用该算子呢?
例如2^2=0,3^2=1.