簡體   English   中英

0!=在這段代碼中做什么?

[英]what does 0 != do in this code?

在這段代碼中0 !=做什么:

#include <stdio.h>
int main()
{
    int i;
    for(i=0;i<8*5;i++)
        printf("%d",0 != ("HELLO"[i/8] & 1 << (~i&7)) );
    return 0;
}

這是一個簡單的字符串到二進制轉換。 我理解`("HELLO"[i/8] & 1 << (~i&7))但是我無法理解0 !=部分如果我刪除它它不起作用。

是否有任何網站深入教授按位操作?

a != b

是一個等於true或false的表達式。 在C中,沒有truefalse ,但是0被認為是假的,其他任何東西都被認為是真的。 如果它是假的,則表達式如a != b將返回0,如果為真,則返回1。 %d是打印出整數的格式字符串,因此printf()將打印此0或1。

在這個上下文中,a是0,b是另一側表達式的野獸("HELLO"[i/8] & 1 << (~i&7))詳細說明其他操作:

("HELLO"[i/8] & 1 << (~i&7))應添加括號以使其更清晰:

(("HELLO"[i/8]) & (1 << (~i&7)))

(~i&7)取i,翻轉其中的所有位,然后取所有位為7的位。

(1 << (~i&7)))

取1和左移它〜我和7個地方。

a & b

注意到aANDS所有位與那些在b

一些鏈接:

http://en.wikipedia.org/wiki/Bitwise_operation

http://www.cprogramming.com/tutorial/bitwise_operators.html

http://msdn.microsoft.com/en-us/library/17zwb64t.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM